//========= Copyright Valve Corporation ============//
#pragma once

namespace vr
{

	class IVRClientCore
	{
	public:
		/** Initializes the system */
		virtual EVRInitError Init(vr::EVRApplicationType eApplicationType, const char* pStartupInfo) = 0;

		/** cleans up everything in vrclient.dll and prepares the DLL to be unloaded */
		virtual void Cleanup() = 0;

		/** checks to see if the specified interface/version is supported in this vrclient.dll */
		virtual EVRInitError IsInterfaceVersionValid(const char* pchInterfaceVersion) = 0;

		/** Retrieves any interface from vrclient.dll */
		virtual void* GetGenericInterface(const char* pchNameAndVersion, EVRInitError* peError) = 0;

		/** Returns true if any driver has an HMD attached. Can be called outside of Init/Cleanup */
		virtual bool BIsHmdPresent() = 0;

		/** Returns an English error string from inside vrclient.dll which might be newer than the API DLL */
		virtual const char* GetEnglishStringForHmdError(vr::EVRInitError eError) = 0;

		/** Returns an error symbol from inside vrclient.dll which might be newer than the API DLL */
		virtual const char* GetIDForVRInitError(vr::EVRInitError eError) = 0;
	};

	static const char* const IVRClientCore_Version = "IVRClientCore_003";


}
